html_document: includes: after_body: footer.html

Agenda

 

Welcome!

OBJETIVO: Presentación y breve panorama de lo que haremos las próximas semanas

 

Recomendación como en todo, dejen a un lado los paradigmas, cosas que han escuchado, leido en diversos medios, y preparense para tener una mente dispuesta.

 

Clear your minds!!!

Clear your minds!!!

 

Hay que ubicarnos en donde estamos en base a lo que hacemos actualmente. No todo lo que hacemos hoy esta mal, pero hay aún mas cosas que aprender.

 

Dónde estamos?

Dónde estamos?

 

La generación e ingesta de datos hoy es una necesidad, debemos contar con mejores herramientas para el manejo de los mismos. Es muy util en nuestras vidas se consumidores, pero mucho mejor ser generadores y controladores de ellos.

 

Datos everywhere!

Datos everywhere!

 

Debemos de empezar por algo, los diferentes lenguajes de programación y otras herramientas denominadas Open Source son un excelente comienzo!!

 

Python y R para empezar

Python y R para empezar

 

Necesitamos ver el ecosistema, nuestra realidad y tomar la mejor decisión para ver por donde empezamos, todos los lenguajes son utiles, pero no podemos saberlo todo.

 

Ecosistema de R

Ecosistema de R

 

Python y R ya como un mismo lenguaje, es por ello que empezamos con un leguaje poderoso, que ha ganadado el respeto de Python.

 

R y Python una maravilla!

R y Python una maravilla!

 

R es un lenguaje muy usado para la enseñanza, cada vez mas universidades lo usan como herramienta para estadística y otras áreas, chequen este articulo. http://r4stats.com/articles/popularity/

 

Dudas del Open Source, revisen el siguiente Link https://www.gnu.org/licenses/quick-guide-gplv3.html y naveguen.

 

Getting Started with R Programming

OBJETIVO: Breve historia de R y contexto

 

Historia de R

 

Ross Ihaka and Robert Gentleman desarrollaron R como un software free cuando impartían clases en la Universidad de Auckland en New Zealand a principios de 1990.

Lo crearon a partir del lenguaje estadístico denominado S y para diferenciar su trabajo usaron una sintaxis similar para su propio uso. En 1993 anunciaron su colaboración en las noticias del mailing list de S, muchas personas se interesaron y se sumaron a la colaboración. Dicha colaboración sigue en pie en el sitio https://www.r-project.org/

El lanzamiento oficial (1.0.0) fue en Febrero del 2000, para ese entonces ya era parte de la fundación de software libre GNU. Actualmente la última versión (3.6) está disponible desde Abril de este año para más de 30 países.

 

Ventajas y usos de R

 

Es un software que ayuda a la manipulación de datos, cálculos aritméticos y visualización de gráficos dinámicos.

El código es de fácil escritura y comprensión.

Excelente para el cálculo de matrices, vectores, algoritmos complejos.

Existe una colección muy amplia de herramientas para el análisis de datos, visualización y otros propósitos. dplyr, data.table, tidyr y ggplot2 algunos de ellos.

Fácil desarrollo de herramientas con buen nivel de interacción como blogdown y xaringan.

 

Iniciando

 

Para descargar e instalar R en su última versión, deberán utilizar el siguiente link https://cran.r-project.org/bin/windows/base/ donde encontraran la versión para Windows que es el sistema operativo que todos tenemos.

Un lenguaje amigable, fácil de usar y entender, simple y efectivo.

Con R se distribuyen algunos paquetes, pero existen muchos más en el sitio CRAN, cubriendo así un amplio espectro de herramientas estadísticas, de cálculo y de visualización que les harán más divertida la vida.

El link con todo el material del curso esta en mi repo personal de Git, tengan cuidado de no aruinarlo, luego hacemos otro curso de Git. https://github.com/ricardolastra/Workshop_Seguros

En los próximos días les hare llegar documentos como estos, los cuales les serán de gran apoyo con cosas básicas, no podemos retener todo en mente, además que no cubriremos muchos comandos, ejemplos y funciones de las paqueterías.

 

 

Para las siguientes sesiones usaremos una interface muy “Fancy” denominada RStudio, la cual podrán descargar en el siguiente link https://www.rstudio.com/products/rstudio/download/ que los llevara a tener la versión más reciente 1.2.1335

Existen más programas o UI´s muy padres, Anaconda (luego revisan el siguiente link) https://www.anaconda.com/distribution/ tiene excelentes herramientas con Python y aun para R. Sin embargo una de las mejores herramientas con R es RStudio.

No nos perdemos de mucho, échenle un ojo.

 

 

Están listos?

R_Basico_1.0

OBJETIVO: Vistazo de Rstudio y primeros comandos

 

Recordando…

R es un lenguaje computacional diseñado para la estadística.

  • Es gratis
  • Amplias librerias
  • Basto soporte, mailing list, blogs, tutoriales
  • De facíl desarrollo
  • Desarrolado por estadísticos

 

Recuerden que cualquier cosa que escriban en R muy probablemente no seran los primeros en intentarlo, hay una gran posibilidad que alguien ya haya escrito algun paquete justo para lo que necesitan.

Hecharemos un vistazo a la parte basica de RStudio que nos permitira entender el funcionamiento del lenguaje, sus alcances, sus aplicaciones y sus ventajas sobre las herramientas actuales que conocemos.

 

 

Inicien RStudio y abran un R script:

  • En Windows click en el boton de Inicio y busquen Rstudio.
  • Ya en Rstudio den click en File -> New File -> R script
  • Guardenlo en su carpeta del curso File -> Save As -> ruta a su carpeta y nombre del file

Ahora traten de reproducir las siguientes notas.

Nota. Recuerden el simbolo # para comentar su codigo.

 

FORMAS DE DECLARAR Ó GUARDAR Ó ALMACENAR Ó MANTENER VARIABLES:

x = 3
y <- 4
5 -> z

Asi estan almacenadas en el ambiente:

x
## [1] 3
y
## [1] 4
z
## [1] 5

Nota. Los valores que guardamos pueden ser usados en subsecuentes operaciones, recuerden que lo mas limpio es poner el nombre a la izquierda y los valores a la derecha.

 

SOBRESCRIBIR VARIABLES:

x = 4
y <- 5
6 -> z

Asi estan almacenadas en el ambiente:

x
## [1] 4
y
## [1] 5
z
## [1] 6

CALCULOS BASICOS:

Operadores

#SUMAS
25+25
## [1] 50
x+y
## [1] 9
#MULTIPLICACIONES
35*2
## [1] 70
#DIVISIONES
x/y
## [1] 0.8
#RESTAS
z-x-y
## [1] -3
#Potencias
3^2
## [1] 9
y^x
## [1] 625

CALCULOS BASICOS

FORMAS DE NO HACER CALCULOS BASICOS, ASI NO ES LA SINTAXIS DE R:

#SUMAS
#=25+25

#MULTIPLICACIONES
#(35)(2)

VECTORES

#Basicos
x <- c(1,4,3,1,3,2,2,2)
x[1]
## [1] 1
x[2]
## [1] 4
x[2:4]
## [1] 4 3 1
x[-1]
## [1] 4 3 1 3 2 2 2
x[-4]
## [1] 1 4 3 3 2 2 2
x[x<=3]
## [1] 1 3 1 3 2 2 2
#Función which (más adelante veremos, for, while, ifelse)
#Devuelve la posición del elemento que pidamos validar.
which(x==1)
## [1] 1 4
#Quizá con el alfabeto es más claro.
which(letters == "g")
## [1] 7
x==1
## [1]  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
#Mas complejos con operaciones, guardamos vectores
Cebollas.huacal <- c(12,4,4,6,9,3)
Chiles.caja <- c(5,3,2,2,12,9)
#Multiplicamos vectores
Cebollas.precio <- Cebollas.huacal *200
Chiles.precio <- Chiles.caja *100
#Sumamos vectores
Cebollas.precio + Chiles.precio
## [1] 2900 1100 1000 1400 3000 1500
#Tambien lo podemos hacer asi en 1 sola linea
Cebollas.huacal *200 + Chiles.caja *100
## [1] 2900 1100 1000 1400 3000 1500

OBJETOS

objeto <- 3*3

FUNCIONES

myfun = function(x, y){
  return (x*y)
}
myfun(3,4)
## [1] 12
myfun2 = function(x, n=2){
  return(x^n)
}
myfun2(4)
## [1] 16
myfun2(2, n=3)
## [1] 8

R LOOP´S

Sintaxis WHILE:

while (test_expression){ statement }

 

i <- 1
while (i < 6) {
  print(i)
  i = i+1
  }
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5

 

Sintaxis FOR:

for(var in seq){ expr }

 

for (año in c(2014,2015,2016,2017,2018,2019)){
  print(paste("El año actual es", año))
}
## [1] "El año actual es 2014"
## [1] "El año actual es 2015"
## [1] "El año actual es 2016"
## [1] "El año actual es 2017"
## [1] "El año actual es 2018"
## [1] "El año actual es 2019"

 

Aún mejor…

for (año in 2014:2019){
  print(paste("El año actual es", año))
}
## [1] "El año actual es 2014"
## [1] "El año actual es 2015"
## [1] "El año actual es 2016"
## [1] "El año actual es 2017"
## [1] "El año actual es 2018"
## [1] "El año actual es 2019"

 

lo ideal…

años <- c(2014,2015,2016,2017,2018,2019)
for (i in años){
  print(paste("El año actual es", i))
}
## [1] "El año actual es 2014"
## [1] "El año actual es 2015"
## [1] "El año actual es 2016"
## [1] "El año actual es 2017"
## [1] "El año actual es 2018"
## [1] "El año actual es 2019"

 

R FUNCTION´S

Sintaxis IFELSE:

ifelse(test, yes, no)

 

plazo <- c(6,9,12,24,30)
ifelse(plazo==9, "aplica" , "no aplica")
## [1] "no aplica" "aplica"    "no aplica" "no aplica" "no aplica"

 

más divertido…

plazo <- c(6,9,12,24,30)
ifelse(plazo>=9 & plazo<=24, "aplica" , "no aplica")
## [1] "no aplica" "aplica"    "aplica"    "aplica"    "no aplica"

 

Sintaxis WHICH:

which(x, arr.ind = FALSE, useNames = TRUE)

 

which(letters == "g")
## [1] 7

 

Nota. Para más detalles consulten los documentos de apoyo del repo de git en el documento refcard_2.0_operators_others

 

R_Basico_1.1

OBJETIVO: Como cargar datos, paquetes y librerias

 

Cargando nuestros datos

R tiene algunas formas de leer archivos, los mas comunes son tablas, archivos planos, archivos con alguna codificacion especifica o estructurada. Aunque no sera el objetivo del curso, leer cadenas de texto, datos sin estructuras definidas o espcificas y archivos sin algun tipo de orden, es algo que tambien se puede hacer en R.

Para leer datos de un archivo, primero deben saber que tipo de archivo es, es decir, su extension. La tabla de abajo muestra una lista de funciones que pueden ser importadas segun el formato del archivo.

tipo de datos funcion paquete
comma separated (.csv) read_csv() readr
other delimited formats read_delim() readr
R (.Rds) read_rds() readr
Stata (.dta) read_dta() haven
SPSS (.sav) read_spss() haven
SAS (.sas7bdat) read_sas() haven
Excel (.xls, .xlsx) read_excel() readxl
regular delimited files fread() data.table

Nota. Mas información ver documento de apoyo data-import

 

Paqueterias de R ó los famosos packages

Los paquetes de R pueden ser instalados desde el famoso CRAN, el cual es una red de archivos de alta gama. Para ello deberán usar la función install.packages. Cuando instalan un paquete ponen una copia en la computadora de forma local, pero aun no lo hace “usable”, solo esta “disponible”. Para usarlo deberan adjuntar o cargar la funcion de library.

Gracias a nuestro amigo Hadley y otros colaboradores, en este curso usaremos para prueba de carga el famoso “the tidyverse”. Tidyverse nos brinda grandes herramientas para manipulación basica y avanzada de datos, es muy funcional, facíl e intuitiva.

 

install.packages("tidyverse")
library(tidyverse)
## -- Attaching packages ---------------------------------------------------------------------------------- tidyverse 1.2.1 --
## v ggplot2 3.1.1       v purrr   0.3.2  
## v tibble  2.1.1       v dplyr   0.8.0.1
## v tidyr   0.8.3       v stringr 1.4.0  
## v readr   1.3.1       v forcats 0.4.0
## -- Conflicts ------------------------------------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()

 

Nota. Ayuda en R

Podemos usar la función help o el operador al inicio de cada sentencia ?.

#help(help)
#?str

 

Cargando nuestro primer archivo:

read_csv("bases/PRIMAS_EJE_CARGA.csv")
## Warning: Missing column names filled in: 'X2' [2], 'X3' [3], 'X4' [4],
## 'X5' [5], 'X6' [6], 'X7' [7], 'X8' [8], 'X9' [9], 'X10' [10], 'X11' [11],
## 'X12' [12]
## Parsed with column specification:
## cols(
##   `TITULOS FEOS DE REPORTES CLASICOS DE SIISA` = col_character(),
##   X2 = col_character(),
##   X3 = col_character(),
##   X4 = col_character(),
##   X5 = col_character(),
##   X6 = col_character(),
##   X7 = col_character(),
##   X8 = col_character(),
##   X9 = col_character(),
##   X10 = col_character(),
##   X11 = col_character(),
##   X12 = col_character()
## )
## # A tibble: 23,347 x 12
##    `TITULOS FEOS D~ X2    X3    X4    X5    X6    X7    X8    X9    X10  
##    <chr>            <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
##  1 <NA>             <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> 
##  2 POLIZA           ENDO~ ID_C~ PRIMA PATE~ MATE~ NOMB~ NOMB~ SEXO  PLAZO
##  3 D00- 201901      1     1     2097~ MURR~ GAREY LETI~ <NA>  F     15   
##  4 D00- 201901      2     2     3202~ MEZA  MEZA  OMAR  <NA>  M     15   
##  5 D00- 201901      1     3     6028~ LOPEZ ARAG~ AARON FEDE~ M     21   
##  6 D00- 201901      2     4     8425~ CARD~ GUEV~ AARON IVAN  M     21   
##  7 D00- 201901      1     5     2842~ JAVI~ MARQ~ AARON ALEJ~ M     27   
##  8 D00- 201901      2     6     1593~ CAST~ RANG~ AARON <NA>  M     9    
##  9 D00- 201901      1     7     1403~ GUER~ RODR~ AARON <NA>  M     15   
## 10 D00- 201901      2     8     3766~ BENC~ RUBIO AARON MART~ M     9    
## # ... with 23,337 more rows, and 2 more variables: X11 <chr>, X12 <chr>

UPS!! Problemas!!!

 

Hagamos que este disponible la libreria…

library(readr)
read_csv("bases/PRIMAS_EJE_CARGA.csv")
## Warning: Missing column names filled in: 'X2' [2], 'X3' [3], 'X4' [4],
## 'X5' [5], 'X6' [6], 'X7' [7], 'X8' [8], 'X9' [9], 'X10' [10], 'X11' [11],
## 'X12' [12]
## Parsed with column specification:
## cols(
##   `TITULOS FEOS DE REPORTES CLASICOS DE SIISA` = col_character(),
##   X2 = col_character(),
##   X3 = col_character(),
##   X4 = col_character(),
##   X5 = col_character(),
##   X6 = col_character(),
##   X7 = col_character(),
##   X8 = col_character(),
##   X9 = col_character(),
##   X10 = col_character(),
##   X11 = col_character(),
##   X12 = col_character()
## )
## # A tibble: 23,347 x 12
##    `TITULOS FEOS D~ X2    X3    X4    X5    X6    X7    X8    X9    X10  
##    <chr>            <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
##  1 <NA>             <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> 
##  2 POLIZA           ENDO~ ID_C~ PRIMA PATE~ MATE~ NOMB~ NOMB~ SEXO  PLAZO
##  3 D00- 201901      1     1     2097~ MURR~ GAREY LETI~ <NA>  F     15   
##  4 D00- 201901      2     2     3202~ MEZA  MEZA  OMAR  <NA>  M     15   
##  5 D00- 201901      1     3     6028~ LOPEZ ARAG~ AARON FEDE~ M     21   
##  6 D00- 201901      2     4     8425~ CARD~ GUEV~ AARON IVAN  M     21   
##  7 D00- 201901      1     5     2842~ JAVI~ MARQ~ AARON ALEJ~ M     27   
##  8 D00- 201901      2     6     1593~ CAST~ RANG~ AARON <NA>  M     9    
##  9 D00- 201901      1     7     1403~ GUER~ RODR~ AARON <NA>  M     15   
## 10 D00- 201901      2     8     3766~ BENC~ RUBIO AARON MART~ M     9    
## # ... with 23,337 more rows, and 2 more variables: X11 <chr>, X12 <chr>

Clasico de SIISA y nuestros amigos de TI!!!

 

library(readr)
read_csv("bases/PRIMAS_EJE_CARGA.csv", skip = 2)
## Parsed with column specification:
## cols(
##   POLIZA = col_character(),
##   ENDOSO = col_double(),
##   ID_CONS = col_double(),
##   PRIMA = col_double(),
##   PATERNO = col_character(),
##   MATERNO = col_character(),
##   NOMBRE = col_character(),
##   NOMBRE_2 = col_character(),
##   SEXO = col_character(),
##   PLAZO = col_double(),
##   SEG_SOCIAL = col_double(),
##   ID_PROD = col_double()
## )
## # A tibble: 23,345 x 12
##    POLIZA ENDOSO ID_CONS  PRIMA PATERNO MATERNO NOMBRE NOMBRE_2 SEXO  PLAZO
##    <chr>   <dbl>   <dbl>  <dbl> <chr>   <chr>   <chr>  <chr>    <chr> <dbl>
##  1 D00- ~      1       1 20975. MURRIE~ GAREY   LETIC~ <NA>     F        15
##  2 D00- ~      2       2 32022. MEZA    MEZA    OMAR   <NA>     M        15
##  3 D00- ~      1       3 60285. LOPEZ   ARAGON  AARON  FEDERICO M        21
##  4 D00- ~      2       4  8425. CARDONA GUEVARA AARON  IVAN     M        21
##  5 D00- ~      1       5 28429. JAVIER  MARQUEZ AARON  ALEJAND~ M        27
##  6 D00- ~      2       6 15936. CASTIL~ RANGEL  AARON  <NA>     M         9
##  7 D00- ~      1       7 14032. GUERRE~ RODRIG~ AARON  <NA>     M        15
##  8 D00- ~      2       8  3767. BENCOMO RUBIO   AARON  MARTIN   M         9
##  9 D00- ~      1       9  1742. GARCIA  RAMON   AARON  NEFTALI  M         3
## 10 D00- ~      2      10 16206. SEGUNDO DIONIC~ AARON  MELCHOR  M        15
## # ... with 23,335 more rows, and 2 more variables: SEG_SOCIAL <dbl>,
## #   ID_PROD <dbl>

 

primas <- read_csv("bases/PRIMAS_EJE_CARGA.csv", skip = 2, n_max = 5)
## Parsed with column specification:
## cols(
##   POLIZA = col_character(),
##   ENDOSO = col_double(),
##   ID_CONS = col_double(),
##   PRIMA = col_double(),
##   PATERNO = col_character(),
##   MATERNO = col_character(),
##   NOMBRE = col_character(),
##   NOMBRE_2 = col_character(),
##   SEXO = col_character(),
##   PLAZO = col_double(),
##   SEG_SOCIAL = col_double(),
##   ID_PROD = col_double()
## )

 

#install.packages("data.table")
library(data.table)
## 
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
## 
##     between, first, last
## The following object is masked from 'package:purrr':
## 
##     transpose
primas_fread <- fread("bases/PRIMAS_EJE_CARGA.csv", skip = 2, sep = ",")
head(primas_fread,5)
##         POLIZA ENDOSO ID_CONS    PRIMA  PATERNO MATERNO  NOMBRE  NOMBRE_2
## 1: D00- 201901      1       1 20975.47 MURRIETA   GAREY LETICIA          
## 2: D00- 201901      2       2 32021.65     MEZA    MEZA    OMAR          
## 3: D00- 201901      1       3 60285.43    LOPEZ  ARAGON   AARON  FEDERICO
## 4: D00- 201901      2       4  8425.26  CARDONA GUEVARA   AARON      IVAN
## 5: D00- 201901      1       5 28428.92   JAVIER MARQUEZ   AARON ALEJANDRO
##    SEXO PLAZO SEG_SOCIAL ID_PROD
## 1:    F    15          1     720
## 2:    M    15          2     700
## 3:    M    21          1     700
## 4:    M    21          1     700
## 5:    M    27          1     700

 

Ahora validamos ó exploramos los datos que cargamos en el ambiente con las siguientes funciones estadísticas

class(primas_fread)
## [1] "data.table" "data.frame"

 

Podemos obtener aún más

library(dplyr)
glimpse(primas_fread)
## Observations: 23,345
## Variables: 12
## $ POLIZA     <chr> "D00- 201901", "D00- 201901", "D00- 201901", "D00- ...
## $ ENDOSO     <int> 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, ...
## $ ID_CONS    <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ...
## $ PRIMA      <dbl> 20975.47, 32021.65, 60285.43, 8425.26, 28428.92, 15...
## $ PATERNO    <chr> "MURRIETA", "MEZA", "LOPEZ", "CARDONA", "JAVIER", "...
## $ MATERNO    <chr> "GAREY", "MEZA", "ARAGON", "GUEVARA", "MARQUEZ", "R...
## $ NOMBRE     <chr> "LETICIA", "OMAR", "AARON", "AARON", "AARON", "AARO...
## $ NOMBRE_2   <chr> "", "", "FEDERICO", "IVAN", "ALEJANDRO", "", "", "M...
## $ SEXO       <chr> "F", "M", "M", "M", "M", "M", "M", "M", "M", "M", "...
## $ PLAZO      <int> 15, 15, 21, 21, 27, 9, 15, 9, 3, 15, 15, 15, 21, 9,...
## $ SEG_SOCIAL <int> 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, ...
## $ ID_PROD    <int> 720, 700, 700, 700, 700, 720, 700, 720, 700, 700, 7...

 

Un poco más

str(primas_fread)
## Classes 'data.table' and 'data.frame':   23345 obs. of  12 variables:
##  $ POLIZA    : chr  "D00- 201901" "D00- 201901" "D00- 201901" "D00- 201901" ...
##  $ ENDOSO    : int  1 2 1 2 1 2 1 2 1 2 ...
##  $ ID_CONS   : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ PRIMA     : num  20975 32022 60285 8425 28429 ...
##  $ PATERNO   : chr  "MURRIETA" "MEZA" "LOPEZ" "CARDONA" ...
##  $ MATERNO   : chr  "GAREY" "MEZA" "ARAGON" "GUEVARA" ...
##  $ NOMBRE    : chr  "LETICIA" "OMAR" "AARON" "AARON" ...
##  $ NOMBRE_2  : chr  "" "" "FEDERICO" "IVAN" ...
##  $ SEXO      : chr  "F" "M" "M" "M" ...
##  $ PLAZO     : int  15 15 21 21 27 9 15 9 3 15 ...
##  $ SEG_SOCIAL: int  1 2 1 1 1 1 1 1 1 1 ...
##  $ ID_PROD   : int  720 700 700 700 700 720 700 720 700 700 ...
##  - attr(*, ".internal.selfref")=<externalptr>

 

la mejor información!!!

summary(primas_fread)
##     POLIZA              ENDOSO          ID_CONS          PRIMA       
##  Length:23345       Min.   : 1.000   Min.   :    1   Min.   : -2335  
##  Class :character   1st Qu.: 1.000   1st Qu.: 5837   1st Qu.:  5637  
##  Mode  :character   Median : 2.000   Median :11673   Median : 11046  
##                     Mean   : 1.504   Mean   :11673   Mean   : 14705  
##                     3rd Qu.: 2.000   3rd Qu.:17509   3rd Qu.: 19253  
##                     Max.   :33.000   Max.   :23345   Max.   :415787  
##    PATERNO            MATERNO             NOMBRE         
##  Length:23345       Length:23345       Length:23345      
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character  
##                                                          
##                                                          
##                                                          
##    NOMBRE_2             SEXO               PLAZO         SEG_SOCIAL   
##  Length:23345       Length:23345       Min.   : 3.00   Min.   :1.000  
##  Class :character   Class :character   1st Qu.: 9.00   1st Qu.:1.000  
##  Mode  :character   Mode  :character   Median :15.00   Median :1.000  
##                                        Mean   :16.18   Mean   :1.137  
##                                        3rd Qu.:21.00   3rd Qu.:1.000  
##                                        Max.   :34.00   Max.   :4.000  
##     ID_PROD    
##  Min.   : 242  
##  1st Qu.: 638  
##  Median : 700  
##  Mean   : 669  
##  3rd Qu.: 700  
##  Max.   :1780

R_Basico_1.2

OBJETIVO: Manejo de datos

 

Normalmente los datos en R son almacenados como data.frame

Un data.frame es una lista de vectores de la misma longitud, piensenlos como una tabla de observaciones (individuos), cada entrada del vector en la lista forma una columna, cada columna puede ser de diferente tipo, conocemos a las columnas como variables y a las filas como observaciones.

Un data.frame tiene entonces dos dimensiones correspondientes al numero de filas y columnas, en ese estricto orden.

Empezaremos a hacer nuestros primeros subsets, muy utiles en la vida real.

 

Empezamos con un clasico, filter

filter(primas_fread, PLAZO == 34 & SEXO == "F")
##        POLIZA ENDOSO ID_CONS    PRIMA   PATERNO MATERNO NOMBRE   NOMBRE_2
## 1 D00- 201901      1   16619 18224.27 HERNANDEZ MORALES  MARIA DEL CARMEN
##   SEXO PLAZO SEG_SOCIAL ID_PROD
## 1    F    34          1    1780
filter(primas_fread, PLAZO == 3, NOMBRE %in% c("AARON", "RICARDO"))
##         POLIZA ENDOSO ID_CONS    PRIMA    PATERNO   MATERNO  NOMBRE
## 1  D00- 201901      1       9  1742.10     GARCIA     RAMON   AARON
## 2  D00- 201901      2      16  4997.92      REYES    URBINA   AARON
## 3  D00- 201901      1      17  9411.26 DE LA ROSA      SOTO   AARON
## 4  D00- 201901      2      22  1086.45     TORRES    ALONSO   AARON
## 5  D00- 201901      2   20218  7138.09    RAMIREZ      MAAS RICARDO
## 6  D00- 201901      1   20241  3867.84   OCEGUERA     GOMEZ RICARDO
## 7  D00- 201901      2   20242  3911.27     JUAREZ   RAMIREZ RICARDO
## 8  D00- 201901      2   20256  3892.39   MARTINEZ    GARCIA RICARDO
## 9  D00- 201901      2   20274  3905.70     FLORES    GARCIA RICARDO
## 10 D00- 201901      1   20275  3107.25     BURGOS  GAMONEDA RICARDO
## 11 D00- 201901      1   20291  3440.37     MORENO     OLIVA RICARDO
## 12 D00- 201901      2   20304 13680.13       NAVA CERVANTES RICARDO
## 13 D00- 201901      1   20305 16946.59       NAVA CERVANTES RICARDO
## 14 D00- 201901      1   20325  8340.28  FRANCISCO    JUAREZ RICARDO
## 15 D00- 201901      1   20345 10971.09   RENTERIA     SALAS RICARDO
## 16 D00- 201901      1   20347  3140.36 ALTAMIRANO   PIZARRO RICARDO
##     NOMBRE_2 SEXO PLAZO SEG_SOCIAL ID_PROD
## 1    NEFTALI    M     3          1     700
## 2     ADRIAN    M     3          1     700
## 3    ALBERTO    M     3          1     700
## 4   EMMANUEL    M     3          1     700
## 5               M     3          1     700
## 6               M     3          1     754
## 7    ALBERTO    M     3          1     700
## 8    ANTONIO    M     3          1     700
## 9               M     3          1     700
## 10              M     3          1     700
## 11              M     3          1     700
## 12 FRANCISCO    M     3          1     700
## 13              M     3          1     700
## 14              M     3          1     700
## 15     DARIO    M     3          1     700
## 16              M     3          1     700

 

Buen acceso a ciertas observaciones, slice

slice(primas_fread, 1:5)
##        POLIZA ENDOSO ID_CONS    PRIMA  PATERNO MATERNO  NOMBRE  NOMBRE_2
## 1 D00- 201901      1       1 20975.47 MURRIETA   GAREY LETICIA          
## 2 D00- 201901      2       2 32021.65     MEZA    MEZA    OMAR          
## 3 D00- 201901      1       3 60285.43    LOPEZ  ARAGON   AARON  FEDERICO
## 4 D00- 201901      2       4  8425.26  CARDONA GUEVARA   AARON      IVAN
## 5 D00- 201901      1       5 28428.92   JAVIER MARQUEZ   AARON ALEJANDRO
##   SEXO PLAZO SEG_SOCIAL ID_PROD
## 1    F    15          1     720
## 2    M    15          2     700
## 3    M    21          1     700
## 4    M    21          1     700
## 5    M    27          1     700

Que pasó aqui?

head(slice(primas_fread,-c(1,2)))
##        POLIZA ENDOSO ID_CONS    PRIMA  PATERNO   MATERNO NOMBRE  NOMBRE_2
## 1 D00- 201901      1       3 60285.43    LOPEZ    ARAGON  AARON  FEDERICO
## 2 D00- 201901      2       4  8425.26  CARDONA   GUEVARA  AARON      IVAN
## 3 D00- 201901      1       5 28428.92   JAVIER   MARQUEZ  AARON ALEJANDRO
## 4 D00- 201901      2       6 15935.75 CASTILLO    RANGEL  AARON          
## 5 D00- 201901      1       7 14032.46 GUERRERO RODRIGUEZ  AARON          
## 6 D00- 201901      2       8  3766.85  BENCOMO     RUBIO  AARON    MARTIN
##   SEXO PLAZO SEG_SOCIAL ID_PROD
## 1    M    21          1     700
## 2    M    21          1     700
## 3    M    27          1     700
## 4    M     9          1     720
## 5    M    15          1     700
## 6    M     9          1     720

Revisemos con un head y un tail

head(primas_fread)
##         POLIZA ENDOSO ID_CONS    PRIMA  PATERNO MATERNO  NOMBRE  NOMBRE_2
## 1: D00- 201901      1       1 20975.47 MURRIETA   GAREY LETICIA          
## 2: D00- 201901      2       2 32021.65     MEZA    MEZA    OMAR          
## 3: D00- 201901      1       3 60285.43    LOPEZ  ARAGON   AARON  FEDERICO
## 4: D00- 201901      2       4  8425.26  CARDONA GUEVARA   AARON      IVAN
## 5: D00- 201901      1       5 28428.92   JAVIER MARQUEZ   AARON ALEJANDRO
## 6: D00- 201901      2       6 15935.75 CASTILLO  RANGEL   AARON          
##    SEXO PLAZO SEG_SOCIAL ID_PROD
## 1:    F    15          1     720
## 2:    M    15          2     700
## 3:    M    21          1     700
## 4:    M    21          1     700
## 5:    M    27          1     700
## 6:    M     9          1     720
tail(primas_fread)
##         POLIZA ENDOSO ID_CONS    PRIMA  PATERNO MATERNO     NOMBRE
## 1: D00- 201901      2   23340  1923.02  PEDRAZA    PE?A ZURISADDAI
## 2: D00- 201901      1   23341 15031.21    PINTO  DUARTE ZURISADDAI
## 3: D00- 201901      2   23342 14564.44   ESPA?A   PEREZ      ZUSET
## 4: D00- 201901      1   23343  5693.09 QUINTERO  GARCIA     ZUXCEL
## 5: D00- 201901      2   23344 12837.95  ESCOBAR SANCHEZ     ZYANYA
## 6: D00- 201901      3   23345 30091.90 VALENCIA   LOPEZ    ZYZLILA
##    NOMBRE_2 SEXO PLAZO SEG_SOCIAL ID_PROD
## 1:             F    15          4     642
## 2:             F    27          4     638
## 3:             F    15          1     638
## 4: CRISTINA    F    27          1     638
## 5:  MARIANA    F    27          1     638
## 6:             F     9          1     638

 

Entonces slice y filter se usan para extraer algun tipo de “observación, row, fila, value, entrada, etc.”, de la misma forma usamos select para acceder a las columnas.

select(slice(primas_fread, 23340:23345), c(PATERNO, MATERNO, NOMBRE))
##    PATERNO MATERNO     NOMBRE
## 1  PEDRAZA    PE?A ZURISADDAI
## 2    PINTO  DUARTE ZURISADDAI
## 3   ESPA?A   PEREZ      ZUSET
## 4 QUINTERO  GARCIA     ZUXCEL
## 5  ESCOBAR SANCHEZ     ZYANYA
## 6 VALENCIA   LOPEZ    ZYZLILA

…podemos usar algo super util como el simbolo de $, el cual nos ayudara a acceder a una columna especifica de un df

sd(primas_fread$PRIMA)
## [1] 14830.78

o tambien…

mean(primas_fread$PRIMA)
## [1] 14704.87

 

Ejercicio 1

El objetivo del siguiente ejericio es para que practiquen, algunas cosas que hemos aprendido, traten de hacerlo siguiendo las notas, recuerden que deben de tener instalado y cargado el tidyverse.

Usen el archivo que esta en la carpeta de las bases de mi repo denominado PRIMAS_EJE_AUTOS.csv.

 

  1. Lean la base del ejericio con alguna función de la libreria readr, y limiten la lectura a 20 rows.
library(readr)
read_csv("C:/Users/Administrador/Desktop/DOC/WORKSHOP_R/Workshop_Seguros/bases/PRIMAS_EJE_AUTOS.csv", n_max = 20)
## Warning: Missing column names filled in: 'X2' [2], 'X4' [4], 'X7' [7],
## 'X8' [8], 'X9' [9], 'X10' [10], 'X11' [11], 'X12' [12], 'X13' [13],
## 'X14' [14], 'X15' [15], 'X16' [16], 'X17' [17]
## Warning: Duplicated column names deduplicated: '201906' => '201906_1' [6]
## Parsed with column specification:
## cols(
##   `FECHA CONTABLE DE:` = col_character(),
##   X2 = col_character(),
##   `201906` = col_character(),
##   X4 = col_character(),
##   A = col_character(),
##   `201906_1` = col_character(),
##   X7 = col_character(),
##   X8 = col_character(),
##   X9 = col_character(),
##   X10 = col_character(),
##   X11 = col_character(),
##   X12 = col_character(),
##   X13 = col_character(),
##   X14 = col_character(),
##   X15 = col_character(),
##   X16 = col_character(),
##   X17 = col_character()
## )
## # A tibble: 20 x 17
##    `FECHA CONTABLE~ X2    `201906` X4    A     `201906_1` X7    X8    X9   
##    <chr>            <chr> <chr>    <chr> <chr> <chr>      <chr> <chr> <chr>
##  1 RAMO:            TODOS <NA>     AGEN~ 700_~ <NA>       <NA>  SUC ~ TODOS
##  2 <NA>             <NA>  <NA>     <NA>  <NA>  <NA>       <NA>  <NA>  <NA> 
##  3 moneda           ramo  subramo  sucu~ poli~ endoso     tipo~ fech~ id_a~
##  4 1                2     1        I10_~ 1103~ 1          D     2019~ 700_~
##  5 1                2     1        I10_~ 1039~ 1          D     2019~ 700_~
##  6 1                2     1        I10_~ 90430 2          D     2019~ 700_~
##  7 1                2     1        I10_~ 1052~ 9003       A     2019~ 700_~
##  8 2                2     11       I10   1111~ 0          <NA>  2019~ 700_~
##  9 2                2     1        I10   1052~ 9002       A     2019~ 700_~
## 10 2                2     1        I10   1108~ 0          <NA>  2019~ 700_~
## 11 2                2     1        I10   1107~ 0          <NA>  2019~ 700_~
## 12 2                2     1        I10   1110~ 0          <NA>  2019~ 700_~
## 13 2                2     1        I10   1106~ 0          <NA>  2019~ 700_~
## 14 2                2     1        I10   1109~ 0          <NA>  2019~ 700_~
## 15 1                2     1        I10_~ 1109~ 0          <NA>  2019~ 700_~
## 16 2                2     1        D00   1039~ 0          <NA>  2019~ 700_~
## 17 1                2     1        I10_~ 1107~ 0          <NA>  2019~ 700_~
## 18 1                2     1        I10_~ 1108~ 0          <NA>  2019~ 700_~
## 19 1                2     1        I10_~ 1110~ 0          <NA>  2019~ 700_~
## 20 1                2     1        I10_~ 1111~ 0          <NA>  2019~ 700_~
## # ... with 8 more variables: X10 <chr>, X11 <chr>, X12 <chr>, X13 <chr>,
## #   X14 <chr>, X15 <chr>, X16 <chr>, X17 <chr>

 

  1. Lean TODA la base del ejericio y asignen la información a una variable, traten de quitar el encabezado feo de los reportes de SIISA.
library(readr)
test <- read_csv("C:/Users/Administrador/Desktop/DOC/WORKSHOP_R/Workshop_Seguros/bases/PRIMAS_EJE_AUTOS.csv", skip = 3)
## Warning: Duplicated column names deduplicated: 'subramo' =>
## 'subramo_1' [17]
## Parsed with column specification:
## cols(
##   moneda = col_double(),
##   ramo = col_double(),
##   subramo = col_double(),
##   sucursal = col_character(),
##   poliza = col_double(),
##   endoso = col_double(),
##   tipo_endoso = col_character(),
##   fecha_contable = col_double(),
##   id_age = col_character(),
##   inicio_vig = col_character(),
##   fin_vig = col_character(),
##   contratante = col_character(),
##   prima = col_double(),
##   comision = col_double(),
##   `area-comercial` = col_character(),
##   tipo_pol = col_character(),
##   subramo_1 = col_character()
## )

 

  1. Ahora, con su variable, usen por lo menos dos de las funciones para exploración de datos.
summary(test)
##      moneda           ramo      subramo         sucursal        
##  Min.   :1.000   Min.   :2   Min.   : 1.000   Length:56         
##  1st Qu.:1.000   1st Qu.:2   1st Qu.: 1.000   Class :character  
##  Median :1.000   Median :2   Median : 1.000   Mode  :character  
##  Mean   :1.143   Mean   :2   Mean   : 1.536                     
##  3rd Qu.:1.000   3rd Qu.:2   3rd Qu.: 1.000                     
##  Max.   :2.000   Max.   :2   Max.   :11.000                     
##      poliza            endoso       tipo_endoso        fecha_contable  
##  Min.   :  90430   Min.   :   0.0   Length:56          Min.   :201906  
##  1st Qu.: 110758   1st Qu.:   0.0   Class :character   1st Qu.:201906  
##  Median : 110922   Median :   0.0   Mode  :character   Median :201906  
##  Mean   : 159939   Mean   : 321.6                      Mean   :201906  
##  3rd Qu.: 111053   3rd Qu.:   0.0                      3rd Qu.:201906  
##  Max.   :1039196   Max.   :9003.0                      Max.   :201906  
##     id_age           inicio_vig          fin_vig         
##  Length:56          Length:56          Length:56         
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character  
##                                                          
##                                                          
##                                                          
##  contratante            prima           comision      area-comercial    
##  Length:56          Min.   :-28765   Min.   : 200.0   Length:56         
##  Class :character   1st Qu.:  5730   1st Qu.: 237.5   Class :character  
##  Mode  :character   Median :  7888   Median : 375.0   Mode  :character  
##                     Mean   : 16158   Mean   : 487.5                     
##                     3rd Qu.: 11170   3rd Qu.: 625.0                     
##                     Max.   :131253   Max.   :1000.0                     
##    tipo_pol          subramo_1        
##  Length:56          Length:56         
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
## 
str(test)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 56 obs. of  17 variables:
##  $ moneda        : num  1 1 1 1 2 2 2 2 2 2 ...
##  $ ramo          : num  2 2 2 2 2 2 2 2 2 2 ...
##  $ subramo       : num  1 1 1 1 11 1 1 1 1 1 ...
##  $ sucursal      : chr  "I10_20" "I10_20" "I10_20" "I10_20" ...
##  $ poliza        : num  110332 103968 90430 105232 111102 ...
##  $ endoso        : num  1 1 2 9003 0 ...
##  $ tipo_endoso   : chr  "D" "D" "D" "A" ...
##  $ fecha_contable: num  201906 201906 201906 201906 201906 ...
##  $ id_age        : chr  "700_23" "700_23" "700_23" "700_23" ...
##  $ inicio_vig    : chr  "24/05/2019" "07/06/2019" "06/06/2019" "15/04/2019" ...
##  $ fin_vig       : chr  "24/05/2020" "08/01/2020" "26/08/2019" "31/01/2020" ...
##  $ contratante   : chr  "CONTRATANTE ANONIMO 1" "CONTRATANTE ANONIMO 1" "CONTRATANTE ANONIMO 1" "CONTRATANTE ANONIMO 1" ...
##  $ prima         : num  -28765 -10592 -1393 1275 598 ...
##  $ comision      : num  250 1000 250 200 250 500 1000 1000 1000 1000 ...
##  $ area-comercial: chr  "SUR" "NORTE" "SUR" "NORTE" ...
##  $ tipo_pol      : chr  "Nueva" "Nueva" "Nueva" "Nueva" ...
##  $ subramo_1     : chr  "Autos" "Autos" "Autos" "Autos" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   moneda = col_double(),
##   ..   ramo = col_double(),
##   ..   subramo = col_double(),
##   ..   sucursal = col_character(),
##   ..   poliza = col_double(),
##   ..   endoso = col_double(),
##   ..   tipo_endoso = col_character(),
##   ..   fecha_contable = col_double(),
##   ..   id_age = col_character(),
##   ..   inicio_vig = col_character(),
##   ..   fin_vig = col_character(),
##   ..   contratante = col_character(),
##   ..   prima = col_double(),
##   ..   comision = col_double(),
##   ..   `area-comercial` = col_character(),
##   ..   tipo_pol = col_character(),
##   ..   subramo_1 = col_character()
##   .. )

 

R_dplyr

OBJETIVO: Pipes, datos en forma tidy y vervos de la librería

 

Sigan cuidadosamente las siguientes instrucciones, inicien RStudio y generen un nuevo proyecto:

  • En Windows click en el botón de Inicio y busquen Rstudio.
  • Ya en Rstudio den click en File -> New Project... -> Existing Directory -> Browse... -> seleccionar carpeta destino -> Open -> Create Project
  • Ya que se abre otra pantalla de R click en File -> New File -> R script
  • Guárdenlo en su carpeta del Proyecto nuevo que acabamos de crear. File -> Save As -> ruta a su carpeta y nombre del file
  • Iniciemos con lo siguiente:

 

library(dplyr)
library(readr)
emision <- read.csv(list.files(pattern='EMISION'), header = T, skip = 2, stringsAsFactors=F)

Revisamos los datos:

str(emision)
## 'data.frame':    854 obs. of  74 variables:
##  $ Moneda                           : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Sucursal                         : chr  "I00" "I00" "I00" "I00" ...
##  $ Producto                         : int  76 76 76 1 76 76 76 76 76 76 ...
##  $ Poliza                           : int  41405 41471 41480 41483 41486 41522 41525 41537 41555 41579 ...
##  $ Fecha.Ini                        : chr  "03/01/2018" "05/01/2018" "05/01/2018" "05/01/2018" ...
##  $ Fecha.Ter                        : chr  "03/01/2019" "05/01/2019" "05/01/2019" "05/01/2019" ...
##  $ Vehiculo                         : int  402743 400906 402558 11293 400015 402822 402663 402663 402663 402687 ...
##  $ Descripcion                      : chr  "BMW R 1200 R NINET URBAN G/S                                                                        " "BMW F 800 GS                                                                                        " "BMW F 700 GS                                                                                        " "MINI COOPER PEPPER AUT 5PTAS                                                                        " ...
##  $ Modelo                           : int  2018 2018 2018 2018 2017 2018 2018 2018 2018 2018 ...
##  $ Prima.Emitida                    : chr  "0" "4,960.33" "0" "0" ...
##  $ Prima.Devengada                  : chr  "0" "4,958.61" "0" "0" ...
##  $ Prima.Pagada                     : chr  "0" "4,960.33" "0" "0" ...
##  $ Monto.Siniestros                 : chr  "0" "0" "0" "0" ...
##  $ X..Siniestros                    : int  0 0 0 0 0 0 1 1 0 0 ...
##  $ Desc..Grupo                      : chr  "R 1200                                  " "F800                                    " "F 700                                   " "Mini Cooper                             " ...
##  $ Agente                           : int  9114 9114 9114 9114 9114 9114 9114 9114 9114 9114 ...
##  $ Desc.de.Agente                   : chr  "BMW CONTADO                                                          " "BMW CONTADO                                                          " "BMW CONTADO                                                          " "BMW CONTADO                                                          " ...
##  $ Ramo                             : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ SubRamo                          : int  5 5 5 1 5 5 5 5 5 5 ...
##  $ Status                           : int  2 2 2 2 1 1 1 1 2 1 ...
##  $ Fecha.Reg                        : chr  "03/01/2018" "05/01/2018" "05/01/2018" "05/01/2018" ...
##  $ Num.Serie                        : chr  "WB10J410XJZ874787   " "WB10B0702JZ946434   " "WB10B0608JZ932393   " "WMWXS5104J2G17847   " ...
##  $ Comis.Agente                     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Asegurado                        : chr  "RICARDO GUISEPPE BERTAZZONI                       " "ADOLFO MALDONADO FUENTES                          " "RICARDO  HERNANDEZ  TANUS                         " "SANDRA LAGUNA PONCE                               " ...
##  $ Contrato                         : logi  NA NA NA NA NA NA ...
##  $ Fecha.Cont                       : int  201801 201801 201801 201801 201801 201801 201801 201801 201801 201801 ...
##  $ Agte.UDI.1                       : int  11 11 11 11 11 11 11 11 11 11 ...
##  $ Descripcion_Agte_UDI_1           : chr  " BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                " " BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                " " BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                " " BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                " ...
##  $ Porc.UDI.1                       : num  8.5 8.5 8.5 6.5 8.5 ...
##  $ Monto.UDI.1                      : num  594 823 1162 901 1449 ...
##  $ Usuario                          : chr  "EUROMOTQ" "VECSAOAX" "IMAGENM0" "VECSAPUE" ...
##  $ Usuario.Aut                      : chr  "EUROMOTQ" "VECSAOAX" "IMAGENM0" "VECSAPUE" ...
##  $ Mtvo_statpol                     : chr  "A PETICIóN DEL ASEGURADO      " "CANCELACIóN FALTA DE PAGO     " "CANCELACIóN FALTA DE PAGO     " "CANCELACIóN FALTA DE PAGO     " ...
##  $ Edo..Circula                     : chr  "QUERETARO                          " "OAXACA                             " "CIUDAD DE MEXICO                   " "PUEBLA                             " ...
##  $ Forma.de.Pago                    : int  1 4 1 1 1 2 1 1 4 1 ...
##  $ Agte.UDI.2                       : int  608 801 600 604 621 602 602 614 614 784 ...
##  $ Descripcion_agte_udi._2          : chr  "EUROMOTORS DE QUERETARO, S.A. DE C.V.                                                     " "VEHICULOS EUROPEOS DE CALIDAD OAXACA SA DE CV                                             " "IMAGEN MOTORS, S.A. DE C.V.                                                               " "VEHICULOS EUROPEOS DE CALIDAD, S.A. DE C.V.                                               " ...
##  $ Porc.UDI._2                      : num  17.5 17.5 17.5 17.5 17.5 ...
##  $ Monto.UDI_.2                     : num  1223 1695 2394 2426 2984 ...
##  $ Pol.coasegurador                 : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Cd.canal                         : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Cd.ramo                          : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Anio.pol                         : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Sexo.del.conductor               : chr  "M  " "M  " "M  " "M  " ...
##  $ Edad.del.conductor               : int  0 37 20 47 35 29 52 23 53 0 ...
##  $ Fecha.de.Nacimiento.del.Conductor: logi  NA NA NA NA NA NA ...
##  $ Fecha.de.Nacimiento.del.Asegurado: chr  "03/01/2018" "24/01/1981" "18/02/1998" "15/11/1971" ...
##  $ Tipo.Persona                     : chr  "FISICA                        " "FISICA                        " "FISICA                        " "FISICA                        " ...
##  $ Edad.del.asegurado               : chr  "0" "36" "19" "46" ...
##  $ Rfc.del.asegurado                : chr  "XEXX010101000 " "MAFA810124EM0 " "HETR980218    " "LAPS711115J68 " ...
##  $ Fecha.Nac..Fianl                 : logi  NA NA NA NA NA NA ...
##  $ X.IVA.Poliza                     : chr  "16.00%" "16.00%" "16.00%" "16.00%" ...
##  $ X.Comision.Agente                : chr  "0%" "0%" "0%" "0%" ...
##  $ Plan.de.Poliza                   : chr  "  114 BASICO                                            " "  116 PREMIUM                                           " "  116 PREMIUM                                           " "  116 PREMIUM                                           " ...
##  $ Direccion.registrada             : chr  "SAN AGUSTIN  213 A,CLAUSTROS DEL PARQUE,76168                                   " "AV. HIDALGO  45,PRIMERA SECCION,70117                                           " "FRANCISCO ESPEJEL  64  EDIF J 5 004 CONDOMINIO 8,7 DE JULIO,15390               " "RODRIGUEZ ALCONERO 1624,CIUDAD SATELITE,72320                                   " ...
##  $ Clave                            : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Descripcion.del.agrupador        : logi  NA NA NA NA NA NA ...
##  $ Cancelable                       : chr  "S" "S" "S" "S" ...
##  $ Bono                             : chr  "SI " "SI " "SI " "SI " ...
##  $ Tipo.de.Tarifa                   : int  2 2 16 2 2 16 16 16 16 16 ...
##  $ Descripcion.1                    : chr  "TARIFA ESPECIAL               " "TARIFA ESPECIAL               " "VALOR FACTURA                 " "TARIFA ESPECIAL               " ...
##  $ Plan.Piso                        : chr  "No        " "No        " "No        " "No        " ...
##  $ Alfa                             : logi  NA NA NA NA NA NA ...
##  $ Beta                             : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Gastos                           : int  780 780 780 780 780 780 780 780 780 780 ...
##  $ Fondo.Especia                    : logi  NA NA NA NA NA NA ...
##  $ Sucursal.Agente                  : chr  "DCD" "DCD" "DCD" "DCD" ...
##  $ Dirección.Comercial              : chr  "MICHAEL PETER SCHITTEK                            " "MICHAEL PETER SCHITTEK                            " "MICHAEL PETER SCHITTEK                            " "MICHAEL PETER SCHITTEK                            " ...
##  $ Tipo.carga                       : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Descuento.Especial               : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ Descuento.por.volúmen            : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Descuento.por.estado             : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Clave.Vehiculo.Santander         : logi  NA NA NA NA NA NA ...
##  $ Marca                            : chr  "MOTOS BMW" "MOTOS BMW" "MOTOS BMW" "MINI" ...

 

Verbos de dplyr que usaremos:

  • mutate() adds new variables that are functions of existing variables
  • select() picks variables based on their names.
  • filter() picks cases based on their values.
  • summarise() reduces multiple values down to a single summary.
  • arrange() changes the ordering of the rows.

Provided by https://dplyr.tidyverse.org/

 

emision_modificado <- emision %>%
  mutate(POL_COMPL = paste(Sucursal, Producto, Poliza, sep = "-"))

 

str(emision_modificado)
## 'data.frame':    854 obs. of  75 variables:
##  $ Moneda                           : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Sucursal                         : chr  "I00" "I00" "I00" "I00" ...
##  $ Producto                         : int  76 76 76 1 76 76 76 76 76 76 ...
##  $ Poliza                           : int  41405 41471 41480 41483 41486 41522 41525 41537 41555 41579 ...
##  $ Fecha.Ini                        : chr  "03/01/2018" "05/01/2018" "05/01/2018" "05/01/2018" ...
##  $ Fecha.Ter                        : chr  "03/01/2019" "05/01/2019" "05/01/2019" "05/01/2019" ...
##  $ Vehiculo                         : int  402743 400906 402558 11293 400015 402822 402663 402663 402663 402687 ...
##  $ Descripcion                      : chr  "BMW R 1200 R NINET URBAN G/S                                                                        " "BMW F 800 GS                                                                                        " "BMW F 700 GS                                                                                        " "MINI COOPER PEPPER AUT 5PTAS                                                                        " ...
##  $ Modelo                           : int  2018 2018 2018 2018 2017 2018 2018 2018 2018 2018 ...
##  $ Prima.Emitida                    : chr  "0" "4,960.33" "0" "0" ...
##  $ Prima.Devengada                  : chr  "0" "4,958.61" "0" "0" ...
##  $ Prima.Pagada                     : chr  "0" "4,960.33" "0" "0" ...
##  $ Monto.Siniestros                 : chr  "0" "0" "0" "0" ...
##  $ X..Siniestros                    : int  0 0 0 0 0 0 1 1 0 0 ...
##  $ Desc..Grupo                      : chr  "R 1200                                  " "F800                                    " "F 700                                   " "Mini Cooper                             " ...
##  $ Agente                           : int  9114 9114 9114 9114 9114 9114 9114 9114 9114 9114 ...
##  $ Desc.de.Agente                   : chr  "BMW CONTADO                                                          " "BMW CONTADO                                                          " "BMW CONTADO                                                          " "BMW CONTADO                                                          " ...
##  $ Ramo                             : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ SubRamo                          : int  5 5 5 1 5 5 5 5 5 5 ...
##  $ Status                           : int  2 2 2 2 1 1 1 1 2 1 ...
##  $ Fecha.Reg                        : chr  "03/01/2018" "05/01/2018" "05/01/2018" "05/01/2018" ...
##  $ Num.Serie                        : chr  "WB10J410XJZ874787   " "WB10B0702JZ946434   " "WB10B0608JZ932393   " "WMWXS5104J2G17847   " ...
##  $ Comis.Agente                     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Asegurado                        : chr  "RICARDO GUISEPPE BERTAZZONI                       " "ADOLFO MALDONADO FUENTES                          " "RICARDO  HERNANDEZ  TANUS                         " "SANDRA LAGUNA PONCE                               " ...
##  $ Contrato                         : logi  NA NA NA NA NA NA ...
##  $ Fecha.Cont                       : int  201801 201801 201801 201801 201801 201801 201801 201801 201801 201801 ...
##  $ Agte.UDI.1                       : int  11 11 11 11 11 11 11 11 11 11 ...
##  $ Descripcion_Agte_UDI_1           : chr  " BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                " " BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                " " BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                " " BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                " ...
##  $ Porc.UDI.1                       : num  8.5 8.5 8.5 6.5 8.5 ...
##  $ Monto.UDI.1                      : num  594 823 1162 901 1449 ...
##  $ Usuario                          : chr  "EUROMOTQ" "VECSAOAX" "IMAGENM0" "VECSAPUE" ...
##  $ Usuario.Aut                      : chr  "EUROMOTQ" "VECSAOAX" "IMAGENM0" "VECSAPUE" ...
##  $ Mtvo_statpol                     : chr  "A PETICIóN DEL ASEGURADO      " "CANCELACIóN FALTA DE PAGO     " "CANCELACIóN FALTA DE PAGO     " "CANCELACIóN FALTA DE PAGO     " ...
##  $ Edo..Circula                     : chr  "QUERETARO                          " "OAXACA                             " "CIUDAD DE MEXICO                   " "PUEBLA                             " ...
##  $ Forma.de.Pago                    : int  1 4 1 1 1 2 1 1 4 1 ...
##  $ Agte.UDI.2                       : int  608 801 600 604 621 602 602 614 614 784 ...
##  $ Descripcion_agte_udi._2          : chr  "EUROMOTORS DE QUERETARO, S.A. DE C.V.                                                     " "VEHICULOS EUROPEOS DE CALIDAD OAXACA SA DE CV                                             " "IMAGEN MOTORS, S.A. DE C.V.                                                               " "VEHICULOS EUROPEOS DE CALIDAD, S.A. DE C.V.                                               " ...
##  $ Porc.UDI._2                      : num  17.5 17.5 17.5 17.5 17.5 ...
##  $ Monto.UDI_.2                     : num  1223 1695 2394 2426 2984 ...
##  $ Pol.coasegurador                 : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Cd.canal                         : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Cd.ramo                          : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Anio.pol                         : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Sexo.del.conductor               : chr  "M  " "M  " "M  " "M  " ...
##  $ Edad.del.conductor               : int  0 37 20 47 35 29 52 23 53 0 ...
##  $ Fecha.de.Nacimiento.del.Conductor: logi  NA NA NA NA NA NA ...
##  $ Fecha.de.Nacimiento.del.Asegurado: chr  "03/01/2018" "24/01/1981" "18/02/1998" "15/11/1971" ...
##  $ Tipo.Persona                     : chr  "FISICA                        " "FISICA                        " "FISICA                        " "FISICA                        " ...
##  $ Edad.del.asegurado               : chr  "0" "36" "19" "46" ...
##  $ Rfc.del.asegurado                : chr  "XEXX010101000 " "MAFA810124EM0 " "HETR980218    " "LAPS711115J68 " ...
##  $ Fecha.Nac..Fianl                 : logi  NA NA NA NA NA NA ...
##  $ X.IVA.Poliza                     : chr  "16.00%" "16.00%" "16.00%" "16.00%" ...
##  $ X.Comision.Agente                : chr  "0%" "0%" "0%" "0%" ...
##  $ Plan.de.Poliza                   : chr  "  114 BASICO                                            " "  116 PREMIUM                                           " "  116 PREMIUM                                           " "  116 PREMIUM                                           " ...
##  $ Direccion.registrada             : chr  "SAN AGUSTIN  213 A,CLAUSTROS DEL PARQUE,76168                                   " "AV. HIDALGO  45,PRIMERA SECCION,70117                                           " "FRANCISCO ESPEJEL  64  EDIF J 5 004 CONDOMINIO 8,7 DE JULIO,15390               " "RODRIGUEZ ALCONERO 1624,CIUDAD SATELITE,72320                                   " ...
##  $ Clave                            : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Descripcion.del.agrupador        : logi  NA NA NA NA NA NA ...
##  $ Cancelable                       : chr  "S" "S" "S" "S" ...
##  $ Bono                             : chr  "SI " "SI " "SI " "SI " ...
##  $ Tipo.de.Tarifa                   : int  2 2 16 2 2 16 16 16 16 16 ...
##  $ Descripcion.1                    : chr  "TARIFA ESPECIAL               " "TARIFA ESPECIAL               " "VALOR FACTURA                 " "TARIFA ESPECIAL               " ...
##  $ Plan.Piso                        : chr  "No        " "No        " "No        " "No        " ...
##  $ Alfa                             : logi  NA NA NA NA NA NA ...
##  $ Beta                             : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Gastos                           : int  780 780 780 780 780 780 780 780 780 780 ...
##  $ Fondo.Especia                    : logi  NA NA NA NA NA NA ...
##  $ Sucursal.Agente                  : chr  "DCD" "DCD" "DCD" "DCD" ...
##  $ Dirección.Comercial              : chr  "MICHAEL PETER SCHITTEK                            " "MICHAEL PETER SCHITTEK                            " "MICHAEL PETER SCHITTEK                            " "MICHAEL PETER SCHITTEK                            " ...
##  $ Tipo.carga                       : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Descuento.Especial               : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ Descuento.por.volúmen            : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Descuento.por.estado             : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Clave.Vehiculo.Santander         : logi  NA NA NA NA NA NA ...
##  $ Marca                            : chr  "MOTOS BMW" "MOTOS BMW" "MOTOS BMW" "MINI" ...
##  $ POL_COMPL                        : chr  "I00-76-41405" "I00-76-41471" "I00-76-41480" "I00-1-41483" ...

 

#Primeros 4 digitos de un valor
emision_modificado <- emision_modificado %>%
  mutate(Año_cont = sub("^(\\d{4}).*$", "\\1", Fecha.Cont))
#Ultimos 4 digitos de un valor
#sub(".*(\\d+{4}).*$", "\\1", df)

 

str(emision_modificado)
## 'data.frame':    854 obs. of  76 variables:
##  $ Moneda                           : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Sucursal                         : chr  "I00" "I00" "I00" "I00" ...
##  $ Producto                         : int  76 76 76 1 76 76 76 76 76 76 ...
##  $ Poliza                           : int  41405 41471 41480 41483 41486 41522 41525 41537 41555 41579 ...
##  $ Fecha.Ini                        : chr  "03/01/2018" "05/01/2018" "05/01/2018" "05/01/2018" ...
##  $ Fecha.Ter                        : chr  "03/01/2019" "05/01/2019" "05/01/2019" "05/01/2019" ...
##  $ Vehiculo                         : int  402743 400906 402558 11293 400015 402822 402663 402663 402663 402687 ...
##  $ Descripcion                      : chr  "BMW R 1200 R NINET URBAN G/S                                                                        " "BMW F 800 GS                                                                                        " "BMW F 700 GS                                                                                        " "MINI COOPER PEPPER AUT 5PTAS                                                                        " ...
##  $ Modelo                           : int  2018 2018 2018 2018 2017 2018 2018 2018 2018 2018 ...
##  $ Prima.Emitida                    : chr  "0" "4,960.33" "0" "0" ...
##  $ Prima.Devengada                  : chr  "0" "4,958.61" "0" "0" ...
##  $ Prima.Pagada                     : chr  "0" "4,960.33" "0" "0" ...
##  $ Monto.Siniestros                 : chr  "0" "0" "0" "0" ...
##  $ X..Siniestros                    : int  0 0 0 0 0 0 1 1 0 0 ...
##  $ Desc..Grupo                      : chr  "R 1200                                  " "F800                                    " "F 700                                   " "Mini Cooper                             " ...
##  $ Agente                           : int  9114 9114 9114 9114 9114 9114 9114 9114 9114 9114 ...
##  $ Desc.de.Agente                   : chr  "BMW CONTADO                                                          " "BMW CONTADO                                                          " "BMW CONTADO                                                          " "BMW CONTADO                                                          " ...
##  $ Ramo                             : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ SubRamo                          : int  5 5 5 1 5 5 5 5 5 5 ...
##  $ Status                           : int  2 2 2 2 1 1 1 1 2 1 ...
##  $ Fecha.Reg                        : chr  "03/01/2018" "05/01/2018" "05/01/2018" "05/01/2018" ...
##  $ Num.Serie                        : chr  "WB10J410XJZ874787   " "WB10B0702JZ946434   " "WB10B0608JZ932393   " "WMWXS5104J2G17847   " ...
##  $ Comis.Agente                     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Asegurado                        : chr  "RICARDO GUISEPPE BERTAZZONI                       " "ADOLFO MALDONADO FUENTES                          " "RICARDO  HERNANDEZ  TANUS                         " "SANDRA LAGUNA PONCE                               " ...
##  $ Contrato                         : logi  NA NA NA NA NA NA ...
##  $ Fecha.Cont                       : int  201801 201801 201801 201801 201801 201801 201801 201801 201801 201801 ...
##  $ Agte.UDI.1                       : int  11 11 11 11 11 11 11 11 11 11 ...
##  $ Descripcion_Agte_UDI_1           : chr  " BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                " " BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                " " BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                " " BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                " ...
##  $ Porc.UDI.1                       : num  8.5 8.5 8.5 6.5 8.5 ...
##  $ Monto.UDI.1                      : num  594 823 1162 901 1449 ...
##  $ Usuario                          : chr  "EUROMOTQ" "VECSAOAX" "IMAGENM0" "VECSAPUE" ...
##  $ Usuario.Aut                      : chr  "EUROMOTQ" "VECSAOAX" "IMAGENM0" "VECSAPUE" ...
##  $ Mtvo_statpol                     : chr  "A PETICIóN DEL ASEGURADO      " "CANCELACIóN FALTA DE PAGO     " "CANCELACIóN FALTA DE PAGO     " "CANCELACIóN FALTA DE PAGO     " ...
##  $ Edo..Circula                     : chr  "QUERETARO                          " "OAXACA                             " "CIUDAD DE MEXICO                   " "PUEBLA                             " ...
##  $ Forma.de.Pago                    : int  1 4 1 1 1 2 1 1 4 1 ...
##  $ Agte.UDI.2                       : int  608 801 600 604 621 602 602 614 614 784 ...
##  $ Descripcion_agte_udi._2          : chr  "EUROMOTORS DE QUERETARO, S.A. DE C.V.                                                     " "VEHICULOS EUROPEOS DE CALIDAD OAXACA SA DE CV                                             " "IMAGEN MOTORS, S.A. DE C.V.                                                               " "VEHICULOS EUROPEOS DE CALIDAD, S.A. DE C.V.                                               " ...
##  $ Porc.UDI._2                      : num  17.5 17.5 17.5 17.5 17.5 ...
##  $ Monto.UDI_.2                     : num  1223 1695 2394 2426 2984 ...
##  $ Pol.coasegurador                 : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Cd.canal                         : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Cd.ramo                          : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Anio.pol                         : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Sexo.del.conductor               : chr  "M  " "M  " "M  " "M  " ...
##  $ Edad.del.conductor               : int  0 37 20 47 35 29 52 23 53 0 ...
##  $ Fecha.de.Nacimiento.del.Conductor: logi  NA NA NA NA NA NA ...
##  $ Fecha.de.Nacimiento.del.Asegurado: chr  "03/01/2018" "24/01/1981" "18/02/1998" "15/11/1971" ...
##  $ Tipo.Persona                     : chr  "FISICA                        " "FISICA                        " "FISICA                        " "FISICA                        " ...
##  $ Edad.del.asegurado               : chr  "0" "36" "19" "46" ...
##  $ Rfc.del.asegurado                : chr  "XEXX010101000 " "MAFA810124EM0 " "HETR980218    " "LAPS711115J68 " ...
##  $ Fecha.Nac..Fianl                 : logi  NA NA NA NA NA NA ...
##  $ X.IVA.Poliza                     : chr  "16.00%" "16.00%" "16.00%" "16.00%" ...
##  $ X.Comision.Agente                : chr  "0%" "0%" "0%" "0%" ...
##  $ Plan.de.Poliza                   : chr  "  114 BASICO                                            " "  116 PREMIUM                                           " "  116 PREMIUM                                           " "  116 PREMIUM                                           " ...
##  $ Direccion.registrada             : chr  "SAN AGUSTIN  213 A,CLAUSTROS DEL PARQUE,76168                                   " "AV. HIDALGO  45,PRIMERA SECCION,70117                                           " "FRANCISCO ESPEJEL  64  EDIF J 5 004 CONDOMINIO 8,7 DE JULIO,15390               " "RODRIGUEZ ALCONERO 1624,CIUDAD SATELITE,72320                                   " ...
##  $ Clave                            : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Descripcion.del.agrupador        : logi  NA NA NA NA NA NA ...
##  $ Cancelable                       : chr  "S" "S" "S" "S" ...
##  $ Bono                             : chr  "SI " "SI " "SI " "SI " ...
##  $ Tipo.de.Tarifa                   : int  2 2 16 2 2 16 16 16 16 16 ...
##  $ Descripcion.1                    : chr  "TARIFA ESPECIAL               " "TARIFA ESPECIAL               " "VALOR FACTURA                 " "TARIFA ESPECIAL               " ...
##  $ Plan.Piso                        : chr  "No        " "No        " "No        " "No        " ...
##  $ Alfa                             : logi  NA NA NA NA NA NA ...
##  $ Beta                             : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Gastos                           : int  780 780 780 780 780 780 780 780 780 780 ...
##  $ Fondo.Especia                    : logi  NA NA NA NA NA NA ...
##  $ Sucursal.Agente                  : chr  "DCD" "DCD" "DCD" "DCD" ...
##  $ Dirección.Comercial              : chr  "MICHAEL PETER SCHITTEK                            " "MICHAEL PETER SCHITTEK                            " "MICHAEL PETER SCHITTEK                            " "MICHAEL PETER SCHITTEK                            " ...
##  $ Tipo.carga                       : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Descuento.Especial               : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ Descuento.por.volúmen            : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Descuento.por.estado             : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Clave.Vehiculo.Santander         : logi  NA NA NA NA NA NA ...
##  $ Marca                            : chr  "MOTOS BMW" "MOTOS BMW" "MOTOS BMW" "MINI" ...
##  $ POL_COMPL                        : chr  "I00-76-41405" "I00-76-41471" "I00-76-41480" "I00-1-41483" ...
##  $ Año_cont                         : chr  "2018" "2018" "2018" "2018" ...

 

emision_modificado <- emision_modificado %>%
  select(-(c(Contrato,Fondo.Especia,Clave.Vehiculo.Santander)))

 

colnames(emision_modificado)
##  [1] "Moneda"                           
##  [2] "Sucursal"                         
##  [3] "Producto"                         
##  [4] "Poliza"                           
##  [5] "Fecha.Ini"                        
##  [6] "Fecha.Ter"                        
##  [7] "Vehiculo"                         
##  [8] "Descripcion"                      
##  [9] "Modelo"                           
## [10] "Prima.Emitida"                    
## [11] "Prima.Devengada"                  
## [12] "Prima.Pagada"                     
## [13] "Monto.Siniestros"                 
## [14] "X..Siniestros"                    
## [15] "Desc..Grupo"                      
## [16] "Agente"                           
## [17] "Desc.de.Agente"                   
## [18] "Ramo"                             
## [19] "SubRamo"                          
## [20] "Status"                           
## [21] "Fecha.Reg"                        
## [22] "Num.Serie"                        
## [23] "Comis.Agente"                     
## [24] "Asegurado"                        
## [25] "Fecha.Cont"                       
## [26] "Agte.UDI.1"                       
## [27] "Descripcion_Agte_UDI_1"           
## [28] "Porc.UDI.1"                       
## [29] "Monto.UDI.1"                      
## [30] "Usuario"                          
## [31] "Usuario.Aut"                      
## [32] "Mtvo_statpol"                     
## [33] "Edo..Circula"                     
## [34] "Forma.de.Pago"                    
## [35] "Agte.UDI.2"                       
## [36] "Descripcion_agte_udi._2"          
## [37] "Porc.UDI._2"                      
## [38] "Monto.UDI_.2"                     
## [39] "Pol.coasegurador"                 
## [40] "Cd.canal"                         
## [41] "Cd.ramo"                          
## [42] "Anio.pol"                         
## [43] "Sexo.del.conductor"               
## [44] "Edad.del.conductor"               
## [45] "Fecha.de.Nacimiento.del.Conductor"
## [46] "Fecha.de.Nacimiento.del.Asegurado"
## [47] "Tipo.Persona"                     
## [48] "Edad.del.asegurado"               
## [49] "Rfc.del.asegurado"                
## [50] "Fecha.Nac..Fianl"                 
## [51] "X.IVA.Poliza"                     
## [52] "X.Comision.Agente"                
## [53] "Plan.de.Poliza"                   
## [54] "Direccion.registrada"             
## [55] "Clave"                            
## [56] "Descripcion.del.agrupador"        
## [57] "Cancelable"                       
## [58] "Bono"                             
## [59] "Tipo.de.Tarifa"                   
## [60] "Descripcion.1"                    
## [61] "Plan.Piso"                        
## [62] "Alfa"                             
## [63] "Beta"                             
## [64] "Gastos"                           
## [65] "Sucursal.Agente"                  
## [66] "Dirección.Comercial"              
## [67] "Tipo.carga"                       
## [68] "Descuento.Especial"               
## [69] "Descuento.por.volúmen"            
## [70] "Descuento.por.estado"             
## [71] "Marca"                            
## [72] "POL_COMPL"                        
## [73] "Año_cont"

 

No guardamos lo siguiente en la variable, solo observen que pasa.

emision_modificado %>%
  select(ends_with("conductor")) %>%
  head()
##   Sexo.del.conductor Edad.del.conductor Fecha.de.Nacimiento.del.Conductor
## 1                M                    0                                NA
## 2                M                   37                                NA
## 3                M                   20                                NA
## 4                M                   47                                NA
## 5                M                   35                                NA
## 6                M                   29                                NA

 

emision_modificado <- emision_modificado %>%
  filter(Año_cont == "2018", Marca %in% c("MINI","Ferrari"))

 

head(emision_modificado)
##   Moneda Sucursal Producto Poliza  Fecha.Ini  Fecha.Ter Vehiculo
## 1      1      I00        1  41483 05/01/2018 05/01/2019    11293
## 2      1      I00        1  41684 16/01/2018 16/01/2019     7833
## 3      1      I00        1  41804 23/01/2018 23/01/2019    12370
## 4      1      I00        1  41921 27/01/2018 27/01/2019    13207
## 5      1      I00        1  41975 30/01/2018 30/01/2019    11690
## 6      1      I00        1  42425 22/02/2018 22/02/2019     9781
##                                                                                            Descripcion
## 1 MINI COOPER PEPPER AUT 5PTAS                                                                        
## 2 MINI COOPER S 163HP SALT                                                                            
## 3 MINI COOPER S SEVEN CHILLI AUT 3PTAS                                                                
## 4 MINI COOPER S 15 YEARS AUT                                                                          
## 5 MINI COOPER S CLUBMAN HOT CHILI AUT                                                                 
## 6 MINI COOPER 115HP CHILI AUT                                                                         
##   Modelo Prima.Emitida Prima.Devengada Prima.Pagada Monto.Siniestros
## 1   2018             0               0            0                0
## 2   2017     13,969.73       13,472.18    13,969.73                0
## 3   2017     18,666.01       17,643.21    18,666.01        15,550.59
## 4   2018             0               0            0                0
## 5   2017             0               0            0                0
## 6   2018             0               0            0                0
##   X..Siniestros                              Desc..Grupo Agente
## 1             0 Mini Cooper                                9114
## 2             0 Mini Cooper                                9114
## 3             3 Mini Cooper                                9114
## 4             0 Mini Cooper                                9114
## 5             0 Mini Cooper                                9114
## 6             0 Mini Cooper                                9114
##                                                          Desc.de.Agente
## 1 BMW CONTADO                                                          
## 2 BMW CONTADO                                                          
## 3 BMW CONTADO                                                          
## 4 BMW CONTADO                                                          
## 5 BMW CONTADO                                                          
## 6 BMW CONTADO                                                          
##   Ramo SubRamo Status  Fecha.Reg            Num.Serie Comis.Agente
## 1    2       1      2 05/01/2018 WMWXS5104J2G17847               0
## 2    2       1      1 16/01/2018 WMWXM7102J3C04261               0
## 3    2       1      1 23/01/2018 WMWXM7103H3B24655               0
## 4    2       1      2 27/01/2018 WMWXM7102J2G86395               0
## 5    2       1      2 30/01/2018 WMWLN710XH2D93429               0
## 6    2       1      2 22/02/2018 WMWXM510XJ2H19051               0
##                                            Asegurado Fecha.Cont Agte.UDI.1
## 1 SANDRA LAGUNA PONCE                                    201801         11
## 2 JOSE FERNANDO CEDILLO OBREGON                          201801         11
## 3 ISMAEL BLAS AMADOR                                     201801         11
## 4 INGENIERIA Y ARQUITECTURA MC SA DE CV                  201801         11
## 5 3D FLOOR SA DE CV                                      201801         11
## 6 ADRIAN CAMARA WINFREY                                  201802         11
##                                                           Descripcion_Agte_UDI_1
## 1  BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                
## 2  BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                
## 3  BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                
## 4  BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                
## 5  BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                
## 6  BMW FINANCIAL SERVICES DE MEXICO, S.A. DE C.V                                
##   Porc.UDI.1 Monto.UDI.1  Usuario Usuario.Aut
## 1     6.4992      901.06 VECSAPUE    VECSAPUE
## 2     8.4994     1187.34 BMWATL1     BMWATL1 
## 3     8.4994     1586.50 RICARDOM    RICARDOM
## 4     8.4994     1351.92 Munchen     Munchen 
## 5     6.4992      938.04 VECSAPUE    VECSAPUE
## 6     8.4994      729.65 FARRETUX    FARRETUX
##                     Mtvo_statpol                        Edo..Circula
## 1 CANCELACIóN FALTA DE PAGO      PUEBLA                             
## 2 STATUS NORMAL                  ESTADO DE MEXICO                   
## 3 REHABILITADA                   CIUDAD DE MEXICO                   
## 4 CANCELACIóN FALTA DE PAGO      CIUDAD DE MEXICO                   
## 5 CANCELACIóN FALTA DE PAGO      PUEBLA                             
## 6 A PETICIóN DEL ASEGURADO       CHIAPAS                            
##   Forma.de.Pago Agte.UDI.2
## 1             1        604
## 2             1        624
## 3             1        740
## 4             1        602
## 5             1        604
## 6             1        802
##                                                                      Descripcion_agte_udi._2
## 1 VEHICULOS EUROPEOS DE CALIDAD, S.A. DE C.V.                                               
## 2 MOMENTUM SATELITE, S.A. DE C.V.                                                           
## 3 COAPA PREMIUM SA DE CV                                                                    
## 4 MUNCHEN MOTORS, S.A. DE C.V.                                                              
## 5 VEHICULOS EUROPEOS DE CALIDAD, S.A. DE C.V.                                               
## 6 FARRERA PENINSULA SA DE CV                                                                
##   Porc.UDI._2 Monto.UDI_.2 Pol.coasegurador Cd.canal Cd.ramo Anio.pol
## 1     17.5008      2426.34                0        0       0        0
## 2     17.5006      2444.79                0        0       0        0
## 3     17.5006      3266.66                0        0       0        0
## 4     17.5006      2783.65                0        0       0        0
## 5     17.5008      2525.91                0        0       0        0
## 6     17.5006      1502.37                0        0       0        0
##   Sexo.del.conductor Edad.del.conductor Fecha.de.Nacimiento.del.Conductor
## 1                M                   47                                NA
## 2                M                   65                                NA
## 3                M                   46                                NA
## 4                F                    0                                NA
## 5                F                    0                                NA
## 6                M                   28                                NA
##   Fecha.de.Nacimiento.del.Asegurado                   Tipo.Persona
## 1                        15/11/1971 FISICA                        
## 2                        08/05/1953 FISICA                        
## 3                        02/05/1972 FISICA                        
## 4                        22/01/2018 MORAL                         
## 5                        30/01/2018 MORAL                         
## 6                        20/11/1990 FISICA                        
##   Edad.del.asegurado Rfc.del.asegurado Fecha.Nac..Fianl X.IVA.Poliza
## 1                 46    LAPS711115J68                NA       16.00%
## 2                 64    CEOF530508GG8                NA       16.00%
## 3                 45    BAAI7205024P3                NA       16.00%
## 4                  0    IAR060526UY2                 NA       16.00%
## 5                  0    DFL1706028Z4                 NA       16.00%
## 6                 27    CAWA901120                   NA       16.00%
##   X.Comision.Agente
## 1                0%
## 2                0%
## 3                0%
## 4                0%
## 5                0%
## 6                0%
##                                             Plan.de.Poliza
## 1   116 PREMIUM                                           
## 2   114 BASICO                                            
## 3   116 PREMIUM                                           
## 4   114 BASICO                                            
## 5   116 PREMIUM                                           
## 6   114 BASICO                                            
##                                                               Direccion.registrada
## 1 RODRIGUEZ ALCONERO 1624,CIUDAD SATELITE,72320                                   
## 2 MORAS Y NARCISOS 22 MZ 28  LT 6,HACIENDA DE COACALCO,56000                      
## 3 CASCADA 305 15,SAN ANDRES TETEPILCO,9440                                        
## 4 CONSTITUYENTES 847,BELEM DE LAS FLORES,1110                                     
## 5 CIRCUITO COYOACAN SUR 16 35,VILLAS CHIAUTENCO,72735                             
## 6 CIRCUITO ARBOLEDAS  LOTE 2 MANZ 1,CAMPESTRE ARENAL,29057                        
##   Clave Descripcion.del.agrupador Cancelable Bono Tipo.de.Tarifa
## 1     0                        NA          S  SI               2
## 2     0                        NA          S  SI              16
## 3     0                        NA          S  SI              16
## 4     0                        NA          S  SI              16
## 5     0                        NA          S  SI              16
## 6     0                        NA          S  SI               2
##                    Descripcion.1  Plan.Piso Alfa Beta Gastos
## 1 TARIFA ESPECIAL                No           NA    1    780
## 2 VALOR FACTURA                  No           NA    1    780
## 3 VALOR FACTURA                  No           NA    1    780
## 4 VALOR FACTURA                  No           NA    1    780
## 5 VALOR FACTURA                  No           NA    1    780
## 6 TARIFA ESPECIAL                No           NA    1    780
##   Sucursal.Agente                                Dirección.Comercial
## 1             DCD MICHAEL PETER SCHITTEK                            
## 2             DCD MICHAEL PETER SCHITTEK                            
## 3             DCD MICHAEL PETER SCHITTEK                            
## 4             DCD MICHAEL PETER SCHITTEK                            
## 5             DCD MICHAEL PETER SCHITTEK                            
## 6             DCD MICHAEL PETER SCHITTEK                            
##   Tipo.carga Descuento.Especial Descuento.por.volúmen Descuento.por.estado
## 1          0                  0                     0                    0
## 2          0                  0                     0                    0
## 3          0                  0                     0                    0
## 4          0                  0                     0                    0
## 5          0                  0                     0                    0
## 6          0                  0                     0                    0
##   Marca   POL_COMPL Año_cont
## 1  MINI I00-1-41483     2018
## 2  MINI I00-1-41684     2018
## 3  MINI I00-1-41804     2018
## 4  MINI I00-1-41921     2018
## 5  MINI I00-1-41975     2018
## 6  MINI I00-1-42425     2018

 

emision_modificado <- emision_modificado %>%
  group_by(Desc.de.Agente) %>%
  summarise(cuenta = n())

 

emision_modificado
## # A tibble: 3 x 2
##   Desc.de.Agente                                                     cuenta
##   <chr>                                                               <int>
## 1 "BMW CONTADO                                                     ~     91
## 2 "BMW EMPLEADOS CONTADO                                           ~      1
## 3 "BMW USADOS CONTADO                                              ~     59

 

emision_modificado %>%
  arrange(desc(cuenta))
## # A tibble: 3 x 2
##   Desc.de.Agente                                                     cuenta
##   <chr>                                                               <int>
## 1 "BMW CONTADO                                                     ~     91
## 2 "BMW USADOS CONTADO                                              ~     59
## 3 "BMW EMPLEADOS CONTADO                                           ~      1
emision_modificado <- emision_modificado %>%
  arrange(cuenta)

 

emision_modificado
## # A tibble: 3 x 2
##   Desc.de.Agente                                                     cuenta
##   <chr>                                                               <int>
## 1 "BMW EMPLEADOS CONTADO                                           ~      1
## 2 "BMW USADOS CONTADO                                              ~     59
## 3 "BMW CONTADO                                                     ~     91

 

…y la magia de dplyr es: un solo PIPE!!!!!

 

emision %>%
  mutate(POL_COMPL = paste(Sucursal, Producto, Poliza, sep = "-")) %>%
  mutate(Año_cont = sub("^(\\d{4}).*$", "\\1", Fecha.Cont)) %>%
  select(-(c(Contrato,Fondo.Especia,Clave.Vehiculo.Santander))) %>%
  filter(Año_cont == "2018", Marca %in% c("MINI","Ferrari")) %>%
  group_by(Desc.de.Agente, Marca) %>%
  summarise(cuenta = n()) %>%
  arrange(cuenta)
## # A tibble: 3 x 3
## # Groups:   Desc.de.Agente [3]
##   Desc.de.Agente                                               Marca cuenta
##   <chr>                                                        <chr>  <int>
## 1 "BMW EMPLEADOS CONTADO                                     ~ MINI       1
## 2 "BMW USADOS CONTADO                                        ~ MINI      59
## 3 "BMW CONTADO                                               ~ MINI      91

 

Lo guardan en su variable y listo!!!

emision_modificado <- emision %>%
  mutate(POL_COMPL = paste(Sucursal, Producto, Poliza, sep = "-")) %>%
  mutate(Año_cont = sub("^(\\d{4}).*$", "\\1", Fecha.Cont)) %>%
  select(-(c(Contrato,Fondo.Especia,Clave.Vehiculo.Santander))) %>%
  filter(Año_cont == "2018", Marca %in% c("MINI","Ferrari")) %>%
  group_by(Desc.de.Agente, Marca) %>%
  summarise(cuenta = n()) %>%
  arrange(cuenta)

 

Aplausos!!!

R_ggplot

 

R_Rmd

 

R_Text_minig

 

A work by Ricardo Lastra

ricardolcuevas@gmail.com